package schema

import (
	"time"
)

// GroupVideo 群视频对象
type GroupVideo struct {
	ID        string    `json:"id"`                            // 唯一标识
	GroupId   string    `json:"group_id" binding:"required"`   // 群ID
	ContentId string    `json:"content_id" binding:"required"` // 视频ID
	Creator   string    `json:"creator"`                       // 创建者
	CreatedAt time.Time `json:"created_at"`                    // 创建时间
	UpdatedAt time.Time `json:"updated_at"`                    // 更新时间
}

// GroupVideoUpdate 群视频对象
type GroupVideoUpdate struct {
	ID        string    `json:"id"`                             // 唯一标识
	GroupId   string    `json:"group_id" binding:"omitempty"`   // 群ID
	ContentId string    `json:"content_id" binding:"omitempty"` // 视频ID
	Creator   string    `json:"creator"`                        // 创建者
	CreatedAt time.Time `json:"created_at"`                     // 创建时间
	UpdatedAt time.Time `json:"updated_at"`                     // 更新时间
}

func (a *GroupVideoUpdate) ToGroupVideo() *GroupVideo {
	return &GroupVideo{
		ID:        a.ID,
		GroupId:   a.GroupId,
		ContentId: a.ContentId,
		Creator:   a.Creator,
		CreatedAt: a.CreatedAt,
		UpdatedAt: a.UpdatedAt,
	}
}

// GroupVideoQueryParam 查询条件
type GroupVideoQueryParam struct {
	PaginationParam
	GroupId   string `form:"group_id"`   // 群ID
	ContentId string `form:"content_id"` // 视频ID
	Creator   string `form:"creator"`    // 创建者

}

// GroupVideoQueryOptions 查询可选参数项
type GroupVideoQueryOptions struct {
	OrderFields []*OrderField // 排序字段
}

// GroupVideoQueryResult 查询结果
type GroupVideoQueryResult struct {
	Data       GroupVideos
	PageResult *PaginationResult
}

// GroupVideos 群视频列表
type GroupVideos []*GroupVideo
